var xml2js 		= require('xml2js');
var AV 				= require('leanengine');
var Buffer 		= require("buffer").Buffer;

//支付宝网关地址
exports.alipay_gateway = 'https://mapi.alipay.com/gateway.do?';

//↓↓↓↓↓↓↓↓↓↓请在这里配置您的基本信息↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

//合作身份者ID，签约账号，以2088开头由16位纯数字组成的字符串，查看地址：https://b.alipay.com/order/pidAndKey.htm
exports.partner				= "2088421800846986";

//收款支付宝账号，以2088开头由16位纯数字组成的字符串，一般情况下收款账号就是签约账号
exports.seller_id			= exports.partner;

// MD5密钥，安全检验码，由数字和字母组成的32位字符串，查看地址：https://b.alipay.com/order/pidAndKey.htm
exports.key						= "fyoy49e49na57wy0iv8hz8hdkp8u83ak";

// 服务器异步通知页面路径  需http://格式的完整路径，不能加?id=123这类自定义参数，必须外网可以正常访问
exports.notify_url		= "http://benibaby.leanapp.cn/alipay/notify";

// 页面跳转同步通知页面路径 需http://格式的完整路径，不能加?id=123这类自定义参数，必须外网可以正常访问
exports.return_url		= "http://benibaby.leanapp.cn/alipay/return";

//签名方式
exports.sign_type			= "MD5";

//字符编码格式 目前支持 gbk 或 utf-8
exports.input_charset	= "utf-8";

//ca证书路径地址，用于curl中ssl校验
exports.cacert				= "cacert.pem";

//ca证书路径地址，用于curl中ssl校验
//exports.cacert			= "cacert.pem";

//访问模式,根据自己的服务器是否支持ssl访问，若支持请选择https；若不支持请选择http
exports.transport			= "http";

// 支付类型 ，无需修改
exports.payment_type	= "1";

// 产品类型，无需修改
exports.service				= "create_direct_pay_by_user";
//↑↑↑↑↑↑↑↑↑↑请在这里配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑


/**
 * 计算签名
 * 2016.01.03  by 胡斌
 */
exports.getSign = function(json){
	var crypto 	= require('crypto');
	var md5 		= crypto.createHash('md5');
	var stringA="",arr=[],sign;

	for(key in json){
		if(key!="sign" && key!="sign_type")
		arr.push(key);
	}
	arr.sort();

	for(var i=0;i<arr.length;i++){
		arr[i]+="="+json[arr[i]];
	}
	stringA=arr.join("&");

	//console.log(stringA);

	stringSignTemp	= stringA+exports.key;

  var buf 		= new Buffer(stringSignTemp);
  var str 		= buf.toString("binary");

	//console.log(str);
	md5.update(str);
	var sign=md5.digest('hex');

	//console.log(sign);
	return sign;
}

/**
 * 支付宝支付结果接收
 * 2017.01.03  by 胡斌
 */
exports.wxPayCallback = function(req, res) {
	req.rawBody = '';
	req.setEncoding('utf8');
	req.on('data', function(chunk) {
		req.rawBody += chunk;
	});
	req.on('end', function() {
		var parseString = xml2js.parseString;
		parseString(req.rawBody,{explicitArray : false}, function(err, data) {
			console.dir(data);
		});
	});
}
